package services.auto.impl;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import services.auto.AutoService;

import daos.auto.AutoDAO;
import model.entities.Auto;
import beans.AutoVO;

@Service("autoService")
public class AutoServiceImpl implements AutoService {

	//Con IOC
	@Autowired
	private AutoDAO autoDAO; //El nombre del objeto tiene q ser igual al del setter y con el xml.
	
	public void insertAuto(AutoVO autoVO) throws SQLException {
		Auto auto = populate(autoVO);
	
	// Sin IOC
	//	AutoDAOImpl autoDAO = new AutoDAOImpl();
		
		autoDAO.insert(auto);
	}
	
	private Auto populate(AutoVO autoVO){
		Auto auto = new Auto();
		
		auto.setModelo(autoVO.getModelo());
		auto.setColor(autoVO.getColor());
		auto.setPatente(autoVO.getPatente());
		auto.setMarca(autoVO.getMarca());
		auto.setDetalle(autoVO.getDetalle());
		
		return auto;
	}
	
	private AutoVO populate(Auto auto){
		AutoVO autoVO = new AutoVO();
		
		autoVO.setModelo(auto.getModelo());
		autoVO.setColor(auto.getColor());
		autoVO.setPatente(auto.getPatente());
		autoVO.setMarca(auto.getMarca());
		autoVO.setDetalle(auto.getDetalle());
		
		return autoVO;
	}

	public void setAutoDAO(AutoDAO autoDAO) {
		this.autoDAO = autoDAO;
	}

	public List<AutoVO> selectAll() throws SQLException {
		return this.populate(autoDAO.selectAll());
	}

	public AutoVO selectByPatente(AutoVO autoVO) throws SQLException {
		Auto auto = this.populate(autoVO);
		
		return populate(autoDAO.selectByPatente(auto));
	}
	
	private List<AutoVO> populate(List<Auto> autos){
		List<AutoVO> autosVO = new ArrayList<AutoVO>();
		
		for (Auto auto : autos) {
			autosVO.add(populate(auto));
		}
		return autosVO;
	}
}
